In conventional virtual computing systems, resources are typically assigned to clients (e.g., guest operating systems) in such a way that the sum of individually assigned resources is larger than the actual amount of physical resources. This is called “overprovisioning.” For example, a hosting resource manager (“HRM”) that has 2 gigabytes (“GB”) of random access memory (“RAM”) in hardware may assign 1.5 GB (or even 2 GB) to each of multiple guest operating systems. Such overprovisioning is done in an attempt to increase the efficiency of resource usage.
The rationale behind overprovisioning is that most of the time, only a fraction of total available resources are being utilized by each client. Therefore, the system will often be able to satisfy resource requirements of both clients. Various methods have been proposed to effectively manage resources in a virtual computing environment. For example, a Balloon driver has been proposed by VMWare®, as discussed in U.S. Pat. No. 7,433,951. It is known (e.g., see the VMWare® white paper Understanding Memory Resource Management in VMware® ESX™ Server) that the balloon driver solution has some drawbacks when used for memory management, one of which is slow response to the client's additional memory requests.
The balloon driver is a pseudo kernel driver inside each client OS hosted by the virtual machine system. The balloon driver has a private communication channel with a hypervisor, which allows the global resource manager to manipulate the client's resources, such as memory, via commands sent to the balloon driver. In particular, this technology allows the global resource manager (i.e., the hypervisor) to reserve some of the memory originally assigned to the clients and to assign the memory to new clients, if necessary. Normally, all clients will receive all memory resources available in hardware, and then the balloon driver will request memory pages from the corresponding client OS based on commands received from the hypervisor via the private communication channel. However, the balloon driver technology is a rather slow mechanism and in some situations, may not provide much benefit. Accordingly, a more effective approach to overprovisioning resources in a virtual machine environment may be beneficial.